As well known, the Internet is a massive network of networks in which computers communicate with each other via use of different communication protocols. The Internet includes packet-routing devices, such as switches, routers and the like, interconnecting many computers. To support routing of information such as packets, each of the packet-routing devices typically maintains routing tables to perform routing decisions in which to forward traffic from a source computer, through the network, to a destination computer.
One way of forwarding information in a provider network over the Internet is based on MPLS (Multiprotocol Label Switching) techniques. In an MPLS-network, incoming packets are assigned a label by a so-called LER (Label Edge Router) receiving the incoming packets. The packets in the MPLS network are forwarded along a predefined Label Switch Path (LSP) defined in the MPLS network based, at least initially, on the label provided by a respective LER. At internal nodes of the MPLS-network, the packets are forwarded along a predefined LSP through so-called Label Switch Routers.
Each Label Switch Router (LSR) in an LSP between respective LERs in an MPLS-type network makes forwarding decisions based solely on a label of a corresponding packet. Depending on the circumstances, a packet may need to travel through many LSRs along a respective path between LERs of the MPLS-network. As a packet travels through an label-switching network, each LSR along an LSP strips off an existing label associated with a given packet and applies a new label to the given packet prior to forwarding to the next LSR in the LSP. The new label informs the next router in the path how to further forward the packet to a downstream node in the MPLS network eventually to a downstream LER that can properly forward the packet to a destination.
As discussed above, LERs assign incoming packets entering the MPLS-network a label (identifier). Once classification of an incoming packet is complete and mapped in the MPLS-network, other incoming packets are assigned to the appropriate Labeled Switch Paths (LSPs).
Generating LSPs and forwarding packets based on labels serves a number of purposes. For example, LSPs might guarantee a certain quality of service level of performance for a series of data packets. LSPs also provide operators the flexibility to route packets around network congested regions or downed network nodes as well as to create IP tunnels for network-based virtual private networks.
Each LSR in an MPLS-network maintains a so-called Label Forwarding Information Base (LFIB) that identifies how to forward received packets according to their corresponding labels. LFIBs are populated based on use of a protocol known as LDP (Label Distribution Protocol). In general, LDP is a downstream label allocation technique that works in the following way: For each route or path (e.g., Label Switching Path or LSP) in a respective routing table, the label switch router (LSR) allocates a label and creates an entry in its Label Forwarding Information Base (LFIB) with the incoming label set to the allocated label. The LSR then advertises the binding between the label (incoming) it created and a respective route to other adjacent label switch routers. When a LSR receives label binding information for a route and such information was originated by the next hop for that route, the respective LSR places the label into the outgoing label of the LFIB entry associated with the route. This results in creation of a binding between the outgoing label and the route.
LDP associates a Forwarding Equivalence Class (FEC) with each LSP it creates. The FEC associated with an LSP specifies which packets are mapped to the given LSP. LSPs extend through the MPLS-network as each successive LSR splices incoming labels for an FEC to an outgoing label assigned to be the next hop for the given FEC.
Currently, each LSR in an MPLS-network allocates a separate memory block for storing and transferring label binding information to each of its downstream neighbors. For example, a given LSR allocates a block of memory for each downstream neighbor in which to store and thereafter send label binding information to respective peers.